import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Tiny {

    public static void main(String[] args)  {
     try{   
       if (args.length != 2) {
         System.err.println("ERROR: Se precisa indicar el archivo fuente y el archivo objeto");
         System.exit(0);
       } 
       InputStream input = new FileInputStream(args[0]);   
       AnalizadorLexicoTiny analizadorLexico = new AnalizadorLexicoTiny(input);
       ConstructorArbolesTiny constructorArboles = 
                   new ConstructorArbolesTiny(analizadorLexico);
       TinyGA.Sent sent = constructorArboles.parse();
       Evaluador evaluador = new Evaluador();              
       if (evaluador.evalua(sent.err()).val().hayError()) {
           for(String e: sent.err().val().errores())
		    System.out.println(e);
	}
	else {
          ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(args[1]));
          out.writeObject(evaluador.evalua(sent.cod()).val());           
       }
     }
    catch(Exception e) {
      System.err.println("ERROR:"+e);
      System.exit(1);
    }
 }
}    
